package com.py.credit.dao;

import org.apache.ibatis.annotations.Param;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * 数据归集大屏dao
 */
public interface DataMapCollectionDao {

    /**
     * 根据区域编码查询id
     * @return
     */
    Long selectAreaIdByCode(@Param(value = "areaCode") String areaCode);

    /**
     * 查询一级区域
     * @return
     */
    List<LinkedHashMap> selectAreaList();

    /**
     * 查询一级部门
     * @return
     */
    List<LinkedHashMap> selectDeptList();

    /**
     * 查询归集数据库
     * @return
     */
    List<LinkedHashMap> selectdataBaseList();

    /**
     * 数据归集（部门报送排名TOP10)与部门归集数量占比
     * @return
     */
    List<LinkedHashMap> selectOfficeUploadTop10();

    /**
     * 部门数据归集趋势
     * @param id 部门id
     * @return
     */
    LinkedHashMap selectOfficeRateOfIncrease(@Param(value = "id") long id,
                                             @Param(value = "curdate") String curdate,
                                             @Param(value = "update") String update);

    /**
     * 区域归集数据量增长率
     * @param id 区域id
     * @return
     */
    LinkedHashMap selectAreaRateOfIncrease(@Param(value = "id") long id);

    /**
     * 区域报送排名
     * @param id 区域id
     * @return
     */
    Long selectAreaUpload(@Param(value = "id") long id);

    /**
     * 区域数据归集量12个月
     * @param id
     * @return
     */
    Long selectAreaUploadByMonth(@Param(value = "id") long id,
                                 @Param(value = "date") String date);

    /**
     * 信用主体增长率
     * @param datasourceId
     * @return
     */
    LinkedHashMap selectDataSourceRateOfIncrease(@Param(value = "datasourceId") int datasourceId);

    /**
     * 信用主体占比
     * @return
     */
    LinkedHashMap selectDataSource(@Param(value = "datasourceId") int datasourceId);

    /**
     * 数据采集方式
     * @return
     */
    List<LinkedHashMap> selectDataCollectType();
    
    /**
     *  查询行政区划
     * @return
     */
    List<LinkedHashMap> queryAllAreaCodes();
    
    Integer collectionByThisMonth();
    
    Integer collectionByLastMonth();
    
    List<LinkedHashMap> collectionByRelateStatus();
    
    List<LinkedHashMap> collectionByTarget(@Param(value = "type") String type);
}
